#include <iostream>

using namespace std;

int ex,s,m,v,npc,eqn;
int x[110],w[110];
double dc[110],up[110];
double dp1[110],dp2[110];

double min(double a,double b){return a<b?a:b;}
double max(double a,double b){return a>b?a:b;}
double enhance(double dic)
{
    int wt;
    fill(dp2,dp2+110,0);
    for(int i=1;i<=eqn;i++)
    {
        wt=(int)(w[i]*dic);
        if(wt<1)wt=1;
        for(int j=0;j+wt<=m;j++)
        {
            dp2[j]=max(dp2[j],dp2[j+wt]+up[i]);
        }
    }
    return dp2[0];
}
int main()
{
    int T,n;
    double res;
    cin>>T;
    while(T--)
    {
        fill(dp1,dp1+110,1.0);
        cin>>ex>>s>>m>>v;
        cin>>npc;
        for(int i=1;i<=npc;i++) cin>>x[i]>>dc[i];
        cin>>eqn;
        for(int i=1;i<=eqn;i++) cin>>w[i]>>up[i];
        for(int i=1;i<=npc;i++)
        {
            for(int j=0;j+x[i]<=ex;j++)
            {
                dp1[j]=min(dp1[j],dp1[j+x[i]]*dc[i]);
            }
        }
        res=(s-ex)/(double)v;
        for(int i=0;i<=ex;i++)
        {
            res=min(res,(s-i)/((enhance(dp1[i])+1.0)*v));
        }
        printf("%.2lf\n",res);
    }
    return 0;
}
